package day18.pack3;

import java.lang.reflect.Field;
import java.lang.reflect.Method;

public class Test {

    public static void main(String[] args) throws Exception {
        Pig pig = new Pig();
        pig.setAge(20);
        pig.setNickname("猪八戒");
        doAny(pig);
    }

    public static void doAny(Object obj) throws Exception {
        // 调用任意对象的属性
        Field[] fields = obj.getClass().getDeclaredFields();
        for (Field field : fields) {
            field.setAccessible(true); // 暴力反射。 强制访问私有属性
            // user.age
            Object value = field.get(obj);
            System.out.println(field.getName() + "值为：" + value);
        }
        // 调用任意对象的方法
        Method[] methods = obj.getClass().getDeclaredMethods();
        for (Method method : methods) {
            if(method.getName().startsWith("set")) continue;
            Object backvalue = method.invoke(obj);
            System.out.println(method.getName() + "的返回值为：" + backvalue);
        }
    }
}
